/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aqu.controlador;

import aqu.persistencia.Dao.LivroManager;
import aqu.persistencia.entity.Livro;
import aqu.persistencia.utilidad.MessagesController;
import com.icesoft.faces.component.ext.RowSelectorEvent;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author José Alexandre
 */
@ManagedBean
@ViewScoped
public class LivroController {

    private Livro livro = new Livro();
    private List<Livro> lista;
    private DataModel listaLivros;
    private LivroManager livromanager = new LivroManager();
    private boolean panelvisible;

    public boolean isPanelvisible() {
        return panelvisible;
    }

    public void setPanelvisible(boolean panelvisible) {
        this.panelvisible = panelvisible;
    }

    public void llamarPanelvisible(ActionEvent event) {
        //System.out.println("toggleVisible");
        panelvisible = !panelvisible;
    }

    public LivroController() {
        lista = livromanager.getList();

        //  livro = lista.get(1);


    }

    public List<Livro> getLista() {
        lista = livromanager.getList();
        return lista;
    }

    public void setLista(List<Livro> lista) {
        this.lista = lista;
    }

    public Livro getLivro() {
        return livro;
    }

    public void setLivro(Livro livro) {
        this.livro = livro;
    }

    public void prepararAdicionarLivro(ActionEvent actionEvent) {
        livro = new Livro();
    }

    public void prepararAlterarLivro(ActionEvent actionEvent) {
        livro = (Livro) (listaLivros.getRowData());
    }

    public String excluirLivro() {
        try {
            Livro livroTemp = (Livro) (livro);
            if (livromanager.delete(livroTemp) == false) {
                llamarPanelvisible(null);

            }
        } catch (Exception e) {
            MessagesController.addInfo("Mensaje de error :", e.getMessage());
            llamarPanelvisible(null);
        }

        return "index";

    }

    public void adicionarLivro(ActionEvent actionEvent) {
        try {

            if (livromanager.create(livro) == false) {
                llamarPanelvisible(null);

            }
        } catch (Exception e) {
            MessagesController.addInfo("Mensaje de error :", e.getMessage());
            llamarPanelvisible(null);
        }

    }

    public void alterarLivro(ActionEvent actionEvent) {
        try {
            if (livromanager.update(livro) == false) {
                llamarPanelvisible(null);

            }
        } catch (Exception e) {
            MessagesController.addInfo("Mensaje de error :", e.getMessage());
            llamarPanelvisible(null);
        }


    }

    public void rowSelectionListener(RowSelectorEvent event) {
        livro = lista.get(event.getRow());

    }
}
